From f01a9050f4b2861edf6d19347f39282d37c9036b Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Thu, 11 Mar 2004 03:48:26 +0000 Subject: [PATCH] Sync from upstream Wed Mar 10 22:48:15 2004 Jonathan Blandford * Sync from upstream --- gtk/xdgmime/ChangeLog | 4 ++++ gtk/xdgmime/xdgmime.c | 9 ++++++++- gtk/xdgmime/xdgmime.h | 9 ++++++--- gtk/xdgmime/xdgmimeint.c | 3 +-- gtk/xdgmime/xdgmimemagic.c | 41 +++++++++++++++++++++++++++++++------- 5 files changed, 53 insertions(+), 13 deletions(-) diff --git a/gtk/xdgmime/ChangeLog b/gtk/xdgmime/ChangeLog index 09fa08d5f2..6ad8654518 100644 --- a/gtk/xdgmime/ChangeLog +++ b/gtk/xdgmime/ChangeLog @@ -1,3 +1,7 @@ +Wed Mar 10 22:48:15 2004 Jonathan Blandford + + * Sync from upstream + Sun Feb 8 19:05:16 2004 Manish Singh * xdgmimeint.h: declare _xdg_utf8_skip as extern to prevent multiple diff --git a/gtk/xdgmime/xdgmime.c b/gtk/xdgmime/xdgmime.c index e8734fb6cd..b9d0199c64 100644 --- a/gtk/xdgmime/xdgmime.c +++ b/gtk/xdgmime/xdgmime.c @@ -25,7 +25,6 @@ * Boston, MA 02111-1307, USA. */ -#include #include "xdgmime.h" #include "xdgmimeint.h" #include "xdgmimeglob.h" @@ -251,3 +250,11 @@ xdg_mime_shutdown (void) initted = 0; } } + +int +xdg_mime_get_max_buffer_extents (void) +{ + xdg_mime_init (); + + return _xdg_mime_magic_get_buffer_extents (global_magic); +} diff --git a/gtk/xdgmime/xdgmime.h b/gtk/xdgmime/xdgmime.h index f67b7b17e4..e079f06557 100644 --- a/gtk/xdgmime/xdgmime.h +++ b/gtk/xdgmime/xdgmime.h @@ -35,9 +35,6 @@ extern "C" { #endif /* __cplusplus */ -extern const char *xdg_mime_type_unknown; -#define XDG_MIME_TYPE_UNKNOWN xdg_mime_type_unknown - #ifdef XDG_PREFIX #define XDG_ENTRY(func) _XDG_ENTRY2(XDG_PREFIX,func) #define _XDG_ENTRY2(prefix,func) _XDG_ENTRY3(prefix,func) @@ -50,16 +47,22 @@ extern const char *xdg_mime_type_unknown; #define xdg_mime_get_mime_type_for_file XDG_ENTRY(get_mime_type_for_file) #define xdg_mime_get_mime_type_from_file_name XDG_ENTRY(get_mime_type_from_file_name) #define xdg_mime_is_valid_mime_type XDG_ENTRY(is_valid_mime_type) +#define xdg_mime_get_max_buffer_extents XDG_ENTRY(get_max_buffer_extents) #define xdg_mime_type_unknown XDG_ENTRY(type_unknown) #endif +extern const char *xdg_mime_type_unknown; +#define XDG_MIME_TYPE_UNKNOWN xdg_mime_type_unknown + const char *xdg_mime_get_mime_type_for_data (const void *data, size_t len); const char *xdg_mime_get_mime_type_for_file (const char *file_name); const char *xdg_mime_get_mime_type_from_file_name (const char *file_name); int xdg_mime_is_valid_mime_type (const char *mime_type); +int xdg_mime_get_max_buffer_extents (void); void xdg_mime_shutdown (void); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/gtk/xdgmime/xdgmimeint.c b/gtk/xdgmime/xdgmimeint.c index 1bfc512d42..acbbdfba29 100644 --- a/gtk/xdgmime/xdgmimeint.c +++ b/gtk/xdgmime/xdgmimeint.c @@ -25,7 +25,6 @@ * Boston, MA 02111-1307, USA. */ -#include #include "xdgmimeint.h" #include #include @@ -38,7 +37,7 @@ #define TRUE (!FALSE) #endif -const unsigned char _xdg_utf8_skip_data[256] = { +static const unsigned char _xdg_utf8_skip_data[256] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, diff --git a/gtk/xdgmime/xdgmimemagic.c b/gtk/xdgmime/xdgmimemagic.c index bd2a4176a5..436ef30bf6 100644 --- a/gtk/xdgmime/xdgmimemagic.c +++ b/gtk/xdgmime/xdgmimemagic.c @@ -25,7 +25,6 @@ * Boston, MA 02111-1307, USA. */ -#include #include #include "xdgmimemagic.h" #include "xdgmimeint.h" @@ -210,7 +209,7 @@ _xdg_mime_magic_read_a_number (FILE *magic_file, *end_of_file = TRUE; break; } - if (! isdigit ((char) c)) + if (! isdigit (c)) { ungetc (c, magic_file); break; @@ -560,12 +559,12 @@ _xdg_mime_magic_matchlet_compare_level (XdgMimeMagicMatchlet *matchlet, size_t len, int indent) { - while (matchlet != NULL && matchlet->indent == indent) + while ((matchlet != NULL) && (matchlet->indent == indent)) { if (_xdg_mime_magic_matchlet_compare_to_data (matchlet, data, len)) { - if (matchlet->next == NULL || - matchlet->next->indent <= indent) + if ((matchlet->next == NULL) || + (matchlet->next->indent <= indent)) return TRUE; if (_xdg_mime_magic_matchlet_compare_level (matchlet->next, @@ -687,6 +686,31 @@ _xdg_mime_update_mime_magic_extents (XdgMimeMagic *mime_magic) mime_magic->max_extent = max_extent; } +static XdgMimeMagicMatchlet * +_xdg_mime_magic_matchlet_mirror (XdgMimeMagicMatchlet *matchlets) +{ + XdgMimeMagicMatchlet *new_list; + XdgMimeMagicMatchlet *tmp; + + if ((matchlets == NULL) || (matchlets->next == NULL)) + return matchlets; + + new_list = NULL; + tmp = matchlets; + while (tmp != NULL) + { + XdgMimeMagicMatchlet *matchlet; + + matchlet = tmp; + tmp = tmp->next; + matchlet->next = new_list; + new_list = matchlet; + } + + return new_list; + +} + static void _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic, FILE *magic_file) @@ -708,8 +732,11 @@ _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic, break; case XDG_MIME_MAGIC_MAGIC: state = _xdg_mime_magic_parse_magic_line (magic_file, match); - if (state == XDG_MIME_MAGIC_SECTION) - _xdg_mime_magic_insert_match (mime_magic, match); + if (state == XDG_MIME_MAGIC_SECTION) + { + match->matchlet = _xdg_mime_magic_matchlet_mirror (match->matchlet); + _xdg_mime_magic_insert_match (mime_magic, match); + } else if (state == XDG_MIME_MAGIC_EOF || state == XDG_MIME_MAGIC_ERROR) _xdg_mime_magic_match_free (match); break; -- 2.30.2